home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / Amos / SupraProcs / ScreenSaver.AMOS / ScreenSaver.amosSourceCode
Encoding:
AMOS Source Code  |  1996-01-26  |  3.7 KB  |  111 lines

  1. '   AMOSPRO
  2. '
  3. '   ******************************************************** 
  4. '   ***                                                  *** 
  5. '   ***                   Screen Saver                   *** 
  6. '   ***                                                  *** 
  7. '   ***                        by                        *** 
  8. '   ***                                                  *** 
  9. '   ***                   Joseph Bolin                   *** 
  10. '   ***                                                  *** 
  11. '   ******************************************************** 
  12.  
  13. Screen Open 0,320,200,2,Lowres
  14. Curs Off : Paper 0 : Pen 1
  15.  
  16. Do 
  17.    If Inkey$<>"" Then RESET=1 Else RESET=0
  18.    _SCREENSAVER[120,RESET]
  19.    Print At(0,0);"Number of jiffies:";_SAVERLENGTH;"  "
  20. Loop 
  21.  
  22. Procedure _SCREENSAVER[_TIME,RESET]
  23.  
  24.    ' Use:     Call this procedure in the main loop
  25.    '
  26.    ' Inputs:  _TIME  Number of jiffies before blanking  
  27.    '          RESET  If non-zero, counter before blanking will be reset 
  28.    '
  29.    ' Outputs: When screen is blanked _SCREENBLANK procedure is called 
  30.    '          _SAVERLAST     =Last time since last mouse movement or key press  
  31.    '          _SAVERLENGTH   =Length since last mouse movement or key press 
  32.    '          _SAVERX,_SAVERY=Last mouse position 
  33.    '          Param          =-1 if screen blanked, 0 if screen not blanked 
  34.    '
  35.    ' Note:    This procedure does not check keypresses, so you should set 
  36.    '          the parameter RESET when a key is pressed 
  37.  
  38.    Shared _SAVERLAST,_SAVERLENGTH,_SAVERX,_SAVERY
  39.    If RESET Then _SAVERLAST=Timer
  40.    If _SAVERLAST=0 Then _SAVERLAST=Timer
  41.    _SAVERLENGTH=0
  42.    X=X Mouse : If X<>_SAVERX Then _SAVERX=X : _SAVERLAST=Timer : Pop Proc[1]
  43.    Y=Y Mouse : If Y<>_SAVERY Then _SAVERY=Y : _SAVERLAST=Timer : Pop Proc[1]
  44.    If Mouse Key>0 Then _SAVERLAST=Timer : Pop Proc[1]
  45.    _SAVERLENGTH=Timer-_SAVERLAST
  46.    If _SAVERLENGTH<_TIME Then Pop Proc[0]
  47.    _SCREENBLANK
  48.    _SAVERLAST=Timer : _SAVERLENGTH=0
  49. End Proc[-1]
  50. Procedure _SCREENBLANK
  51.    ' Input:  None 
  52.    ' Output: With a unopened screen and 100+ K ram, a screen will be  
  53.    '             opened with a bouncing lines animation 
  54.    '         With all screens open or less than 100 K free, the current 
  55.    '             screen will be hidden
  56.  
  57.    Shared _SAVERX,_SAVERY
  58.    If Chip Free+Fast Free<100000 Then Goto LOWMEM
  59.    _SCREEN=Screen
  60.    For S=0 To 7
  61.       Trap Screen S : If Errtrap=47 Then Exit 
  62.    Next 
  63.    If S=8 Then Goto LOWMEM
  64.    YMAX=256+56*Ntsc
  65.    Screen Open S,320,YMAX,16,Lowres
  66.    Flash Off : Curs Off 
  67.    Hide : Cls 0
  68.    Wait Vbl 
  69.    For I=1 To 8
  70.       Colour I,I*$222-$111
  71.    Next I
  72.    Dim X1(128),Y1(128),X2(128),Y2(128)
  73.    Dim N(16)
  74.    X1(1)=Rnd(320) : Y1(1)=Rnd(YMAX)
  75.    X2(1)=Rnd(320) : Y2(1)=Rnd(YMAX)
  76.    Repeat 
  77.       VX1=(Rnd(4)-2)*2
  78.    Until VX1<>0
  79.    Repeat 
  80.       VY1=(Rnd(4)-2)*2
  81.    Until VY1<>0
  82.    Repeat 
  83.       VX2=(Rnd(4)-2)*2
  84.    Until VX2<>0
  85.    Repeat 
  86.       VY2=(Rnd(4)-2)*2
  87.    Until VY2<>0
  88.    N=8 : T=1
  89.    Repeat 
  90.       Ink 0 : Draw X1(N),Y1(N) To X2(N),Y2(N)
  91.       For I=N To 2 Step -1
  92.          X1(I)=X1(I-1) : Y1(I)=Y1(I-1)
  93.          X2(I)=X2(I-1) : Y2(I)=Y2(I-1)
  94.          Ink I : Draw X1(I),Y1(I) To X2(I),Y2(I)
  95.       Next I
  96.       Add X1(1),VX1 : If X1(1)<0 or X1(1)>320 : VX1=-VX1 : End If 
  97.       Add Y1(1),VY1 : If Y1(1)<0 or Y1(1)>YMAX : VY1=-VY1 : End If 
  98.       Add X2(1),VX2 : If X2(1)<0 or X2(1)>320 : VX2=-VX2 : End If 
  99.       Add Y2(1),VY2 : If Y2(1)<0 or Y2(1)>YMAX : VY2=-VY2 : End If 
  100.       Ink 1 : Draw X1(1),Y1(1) To X2(1),Y2(1)
  101.    Until Mouse Key>0 or Inkey$<>"" or X Mouse<>_SAVERX or Y Mouse<>_SAVERY
  102.    Screen Close S
  103.    Screen _SCREEN
  104.    Pop Proc
  105.  
  106.    LOWMEM:
  107.    Screen Hide 
  108.    Repeat 
  109.    Until Mouse Key>0 or Inkey$<>"" or X Mouse<>_SAVERX or Y Mouse<>_SAVERY
  110.    Screen Show 
  111. End Proc